package come.bjpowernode.javase.io;
/*
int	read(byte[] b):
    一次最多读取b.length()个字节
    往byte[]数组中读
 */
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class FileInputStreamTEst03 {
    public static void main(String[] args) {
        FileInputStream fis = null;
        try {
            //相对路径一定会将当前所在的位置作为起点开始找。
            //IDEA当前的默认路径在哪：工程project的根。
            //fis = new FileInputStream("tempFile");
            fis = new FileInputStream("chapter23/src/come/bjpowernode/javase/io/tempFile4");

            //开始读，采用byte数组，一次读取多个字节，最多读取数组的长度个字节
            byte[] bytes = new byte[4];
            //这个方法的返回值是读取到的字节的数量，不是字节本身。
            int readCount = fis.read(bytes);//第一次读到了四个字节
            System.out.println(readCount);//4
            //将字节数组全部转换为字符串
            //System.out.println(new String(bytes));//abcd
            //不应该全部转换，应该读取多少个转换多少个
            System.out.println(new String(bytes,0,readCount));

            readCount = fis.read(bytes);//第二次只能读取两个字节
            System.out.println(readCount);//2
            //将字节数组全部转换为字符串
            //System.out.println(new String(bytes));//efcd
            //不应该全部转换，应该读取多少个转换多少个
            System.out.println(new String(bytes,0,readCount));

            readCount = fis.read(bytes);//第三次一个字节都没有读到，返回-1
            System.out.println(readCount);//-1
            //将字节数组全部转换为字符串
            //System.out.println(new String(bytes));//efcd
            //不应该全部转换，应该读取多少个转换多少个
            //System.out.println(new String(bytes,0,readCount));//readCount不可以等于-1

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally{
            if(fis != null){
                try {
                    fis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
